// All Books
MATCH (b:Book)
WHERE NOT b.views IS NULL
OPTIONAL MATCH (b)--(:Section)--(r:Reader)
OPTIONAL MATCH (a:Author)-[:AUTHOR]->(b)
WITH b, COLLECT(DISTINCT r) AS readers, COLLECT(a) AS authors
RETURN 
	b.urlLibrivox AS urlLibrivox, 
	'http://archive.org/details/'+b.idIarchive AS urlIarchive, 
	b.language AS lang,
	date(b.dateUploaded) AS dateUploaded,
	authors[0].firstName +' '+authors[0].lastName AS author,
	b.title AS title, 
	b.copyrightYear AS copyrightYear, 
	b.views AS views,
	CASE 
        WHEN SIZE(readers) = 1 THEN readers[0].name 
        ELSE SIZE(readers) 
    END AS readerDisp,
    CASE 
        WHEN SIZE(readers) = 1
		THEN 'https://librivox.org/reader/'+readers[0].id
        ELSE NULL
    END AS readerSingle
ORDER BY b.views DESC;